#ifndef GUI_LIST_H
#define GUI_LIST_H

    #include"gui_spirit.h"
    #include"gui_button.h"

    #define GUI_LIST_MAX_TEXT_LEN 32

    typedef struct gui_list 
    {       
        gui_spirit_t spirit;
    gui_button_t **buttons;
        int padding;
        uint32_t list_num;
    }gui_list_t;
    
    #define GUI_LIST(spirit) ((gui_list_t*)spirit)

    static inline __gui_list_set_color(gui_button_t *btn,gui_color_t color)
    {
        btn->color_idle=color;
        btn->spirit.style.background_color=color;
    }

    gui_spirit_t *gui_list_create(int nums,int width,int height,int item_w,int item_h,int padding);
    int gui_list_set_item_text(gui_list_t *list,int idx,char *text,int len);
    char *gui_list_get_item_text(gui_list_t *list,int idx);
    int gui_list_set_disable(gui_list_t *list,int idx);
    int gui_list_set_enable(gui_list_t *list,int idx);
    int gui_list_set_color(gui_list_t *list,int idx,int alls,gui_color_t color);
    int gui_list_mouse_motion(gui_spirit_t *spirit,int x,int y);
    int gui_list_mouse_press(gui_spirit_t *spirit,int btn,int x,int y);
    int gui_list_mouse_release(gui_spirit_t *spirit,int btn,int x,int y);
    gui_spirit_t *gui_list_create_no_padding(int nums,int width,int height,int item_w,int item_h);

    #define gui_list_nums(spirit) (((gui_list_t*)spirit)->list_num)
#endif 